//导入数据库模型操作模块
const {
  findUsers,
  findUserByid,
  updateOneUser,
} = require('../models/userModel');
//导入处理密码的模块
const bcrypt = require('bcryptjs');

//获取所有用户的处理函数
// const getUsers = async (req, res) => {
//   // console.log(req.query);
//   //pagenum 当前页码   pagesize   每页显示条数   query   查询名字参数
//   const { pagenum, pagesize, query } = req.query;
//   const findRes = await findUsers(query, pagenum, pagesize);
//   if (!findRes) return res.sendMess('获取用户列表失败！');
//   // console.log(findRes);
//   res.send({
//     meta: {
//       msg: '获取成功',
//       status: 200,
//     },
//     data: {
//       total: findRes.total,
//       pagenum: parseInt(pagenum),
//       users: findRes,
//     },
//   });
// };

// 获取登录用户的信息处理函数
const getUser = async (req, res) => {
  //第二个参数表示不显示的信息
  const findRes = await findUserByid(req.user._id, ['-password', '-group']);
  if (!findRes) return res.sendMess('获取用户信息失败！');
  findRes.phone = findRes.phone.slice(0, 3) + '****' + findRes.phone.slice(7);
  res.send({
    meta: { msg: '获取用户信息成功！', status: 200 },
    data: findRes,
  });
};

//更新用户信息的处理函数
const updateUser = async (req, res) => {
  const userinfo = req.body;
  const updateRes = await updateOneUser(req.user._id, userinfo);
  if (!updateRes) return res.sendMess('更新用户信息失败！');
  res.sendMess('更新用户信息成功！', 200);
};

//更新用户密码的处理函数
const updatePassword = async (req, res) => {
  //根据id查询用户信息
  const findRes = await findUserByid(req.user._id);
  if (!findRes) return res.sendMess('用户不存在！');
  //判断密码是否正确
  // console.log(findRes);
  const compareRes = bcrypt.compareSync(req.body.oldPassword, findRes.password);
  if (!compareRes) return res.sendMess('原密码错误！');

  const newPassword = bcrypt.hashSync(req.body.newPassword, 10);
  const updateRes = await updateOneUser(req.user._id, {
    password: newPassword,
  });
  if (!updateRes) return res.sendMess('更新用户密码失败！');
  res.sendMess('更新用户密码成功！', 200);
};

// 获取登录用户账号信息处理函数
const getUserAcount = async (req, res) => {
  //第二个参数表示不显示的信息
  const findRes = await findUserByid(req.user._id, ['phone', 'email']);
  if (!findRes) return res.sendMess('获取用户信息失败！');
  findRes.phone = findRes.phone.slice(0, 3) + '****' + findRes.phone.slice(7);
  if (findRes.email) {
    let str = findRes.email.split('@');
    findRes.email =
      str[0].slice(0, 1) + '****' + str[0].slice(-1) + '@' + str[1];
  }
  res.send({
    meta: { msg: '获取用户账号信息成功！', status: 200 },
    data: findRes,
  });
};

//更新用户头像的处理函数
// const updateAvatar = async (req, res) => {
//   const updateRes = await updateOneUser(req.user._id, {
//     avatar: req.body.avatar,
//   });
//   if (!updateRes) return res.sendMess('更新用户头像失败！');
//   res.sendMess('更新用户头像成功！', 200);
// };

module.exports = {
  // getUsers,
  getUser,
  updateUser,
  updatePassword,
  getUserAcount,
  // updateAvatar,
};
